:ReadMemory
{
 Description:     
    Reads memory and returns to variables. Works with unsigned/signed values. 
 Type: SET

 Parameters:
   Passed:
     0@ - memory address
     1@ - size
     2@ - is signed (1/0), set to signed only if read value is integer type, always unsigned otherwise
     3@ - virtual protect (1/0)
     
   Result:
     4@ - value 

 Example:
  0AB1: call_scm_func @ReadMemory 4 address 0@ size 1 signed true virtual_protect false store_results_to 3@ 
}
0A8D: 4@ = read_memory 0@ size 1@ virtual_protect 3@

    if
    2@ <> false
    then
    1@ *= 8
    1@ -= 1      
    
        if
        08B7:   test 4@ bit 1@
        then  
        1@ += 1              
        5@ = 0
        08BD: set 5@ bit 1@               
        0062: 4@ -= 5@  // (int)        
        end
    end

0AB2: ret 1 value 4@